package cn.tedu.sims.mapper;

import cn.tedu.sims.pojo.entity.InternalUnit;
import cn.tedu.sims.pojo.vo.InternalUnitListItemVO;
import cn.tedu.sims.pojo.vo.InternalUnitStandardVO;
import cn.tedu.sims.pojo.vo.UserListItemVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 内部单位Mapper层
 * @author deng
 * @version 0.0.1
 */
@Repository
public interface InternalUnitMapper {
    /**
     * 添加内部单位
     * @param iu
     * @return
     */
    int insert(InternalUnit iu);
    /**
     * 根据ID删除内部单位
     * @param id
     * @return 影响行数
     */
    int deleteById(Long id);
    /**
     * 查询内部单位
     * @return 数据
     */
    List<InternalUnitListItemVO> list();
    /**
     * 根据ID查询内部单位
     * @return 数据
     */
    InternalUnitStandardVO selectById(Long id);
    /**
     * 根据名字查询
     * @param name
     * @return 数量
     */
    int countByName(String name);

    /**
     * 根据名字模糊查询
     * @param name
     * @return 数量
     */
    List<InternalUnitListItemVO> selectByName(String name);
    /**
     * 根据部门ID查询用户
     * @param id
     * @return 数据
     */
    List<UserListItemVO> selectByUser(Long id);

    /**
     * 查询单位对应的权限
     * @param id
     * @return 数据
     */
    List<Long> selectPowerExist(Long id);

    /**
     * 通过ID统计单位
     * @param internalUnitId
     * @return 数据
     */
    int countById(Long internalUnitId);

    /**
     * 删除权限
     * @param internalUnitId
     * @return 影响行数
     */
    int deleteByRolePower(Long internalUnitId);

    /**
     * 添加权限
     * @param powerId
     * @param internalUnitId
     */
    void insertRolePower(@Param("powerId") Long powerId, @Param("internalUnitId") Long internalUnitId);
}
